/*
 * Codigo gerado automaticamente em 12/04/2013 11:02:25
 * www.munif.com.br
 */
package br.com.automenu.web.controle;

import br.com.automenu.web.entidades.*;
import br.com.automenu.web.negocio.*;
import br.com.munif.util.CrudFacade;
import br.com.munif.util.FacesUtil;
import br.com.munif.util.SistemaControlador;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

/**
 *
 * @author munif
 */
@SessionScoped
@ManagedBean
public class ProdutoControlador implements Serializable {

    private Produto entidade;
    private List<Produto> lista;
    private String filtro;
    private Categoria categoria;
    private List<SubCategoria> listaSubs;

    public ProdutoControlador() {
        listaSubs = new ArrayList<SubCategoria>();
    }

    public List<SubCategoria> getListaSubs() {
        return listaSubs;
    }

    public void setListaSubs(List<SubCategoria> listaSubs) {
        this.listaSubs = listaSubs;
    }

    public Categoria getCategoria() {
        return categoria;
    }

    public void setCategoria(Categoria categoria) {
        this.categoria = categoria;
    }

    public String getFiltro() {
        return filtro;
    }

    public void setFiltro(String filtro) {
        this.filtro = filtro;
    }

    public Produto getEntidade() {
        return entidade;
    }

    public void setEntidade(Produto entidade) {
        this.entidade = (Produto) CrudFacade.getInstance().recuperar(Produto.class, entidade.getId());
    }

    public List<Produto> getLista() {
        if (lista == null) {
            lista = ProdutoFacade.getInstance().lista();
        }
        return lista;
    }

    public void setLista(List<Produto> lista) {
        this.lista = lista;
    }

    public void novo() {
        entidade = new Produto();
    }

    public void excluir(Produto aRemover) {
        CrudFacade.getInstance().remover(aRemover);
        FacesUtil.addMessageInfo("Informação", "O objeto foi excluído.");
        lista = null;
    }

    public void salvar() {
        if (entidade.getId() == null) {
            CrudFacade.getInstance().inserir(entidade);
            FacesUtil.addMessageInfo("Informação", "O objeto foi inserido.");
        } else {
            CrudFacade.getInstance().alterar(entidade);
            FacesUtil.addMessageInfo("Informação", "O objeto foi alterado.");
        }
        lista = null;
    }

    public void cancelar() {
        entidade = null;
        FacesUtil.addMessageWarn("Aviso", "A operação foi cancelada");
    }

    public void filtrar() {
        if (filtro != null) {
            lista = ProdutoFacade.getInstance().listaFiltrando(filtro);
        }
    }

    public void atualizaSubs() {
        listaSubs = SubCategoriaFacade.getInstance().listaFiltrando(categoria);
    }
    
    public void novoComponente(){

        if(entidade.getComponentes()==null){
            entidade.setComponentes(new ArrayList<Componente>());
        }
        Componente componente = new Componente();
        componente.setItemMenu(entidade);
        entidade.getComponentes().add(componente);
    }
       public void removeComponente(Componente componente){
        entidade.getComponentes().remove(componente);
    }
}
